iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
0
自我挑戰組

Access VBA的眉眉角角系列 第 19

Access VBA 的眉眉角角Day19: 取得字串中的指定資料

  • 分享至 

  • xImage
  •  

使用VBA程式開啟表單時,我們可以使用「DoCmd.OpenForm」的語法進行,這個語法中,有個「OpenArgs」(開啟參數)可以使用,我們可以從原始表單開啟另一表單時,將一字串傳送到另一表單中,以便開啟時,使用VBA來處理呈現畫面,這個布份筆者覺得非常有用,但是傳遞唯一串文字,如果要多筆參數傳遞,就要把這些參數組合成一個字串,然後到另一表單時,再解開使用,解開的部份,我撰寫了一個子程式使用,以便於程式開發。

以下為拆解字串取得指定項目的子程式:

Function GetSplitValue(strValue As String, strDelimiter As String, ItemNumber As Integer) As String
    '取得字串由指定字元切割後的第幾個項目的字串值
    
    tmp = Split(strValue, strDelimiter)
    GetSplitValue = tmp(ItemNumber)

End Function

我用兩個表單(F_Day19_1、F_Day19_2)來講解,第一個表單(F_Day19_1)有三個文字方框(Text_1、Text_2、Text_3),一個指令方塊(cmd_OpenOtherForm):
http://ithelp.ithome.com.tw/upload/images/20161213/20007221Jiss0OTzd0.png

該指令方塊的Click事件:

Private Sub cmd_OpenOtherForm_Click()
    strOpenArgs = Text_1 & "|" & Text_2 & "|" & Text_3
    DoCmd.OpenForm "F_Day19_2", acNormal, , , , acDialog, strOpenArgs

End Sub

第二個表單(F_Day19_2)只有一個文字方塊,用來顯示訊息:
http://ithelp.ithome.com.tw/upload/images/20161213/20007221Fl0QsdaBRY.png

當此表單開啟時,執行以下程式拆解OpenArgs參數:

Private Sub Form_Load()
    Dim strOpenArgs As String
    '如果有OpenArgs參數
    If IsNull(Me.OpenArgs) = False Then
        strOpenArgs = Me.OpenArgs
        strText1 = GetSplitValue(strOpenArgs, "|", 0)
        strText2 = GetSplitValue(strOpenArgs, "|", 1)
        strText3 = GetSplitValue(strOpenArgs, "|", 2)
        
        Text_Msg = "原始參數:" & strOpenArgs & vbCrLf
        Text_Msg = Text_Msg & "參數1:" & strText1 & vbCrLf
        Text_Msg = Text_Msg & "參數2:" & strText2 & vbCrLf
        Text_Msg = Text_Msg & "參數3:" & strText3 & vbCrLf
    End If
    
    
End Sub

當由第一個表單,點選「開啟另一按鈕」後,就會看到,由GetSplitValue取出的參數值:
http://ithelp.ithome.com.tw/upload/images/20161213/20007221zTTUlMRdz6.png

以此方式,可省略掉一些程式碼的撰寫,效率可能不會太好,但可節省一些開發時間。

以上介紹,希望對各位有幫助。


上一篇
Access VBA 的眉眉角角Day18: 將數字金額轉成文字金額
下一篇
Access VBA 的眉眉角角Day20: Base64編碼與解碼
系列文
Access VBA的眉眉角角30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言